package com.wocao.commom.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.parser.Feature;
import org.apache.commons.collections.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

public class BeanCopyUtil {

    private BeanCopyUtil() {
    }

    /**
     * 功能描述: 集合转换<br>
     *
     * @param sourceList 源集合
     * @param clazz      目标类型
     * @return java.util.List<T> 目标集合
     * @author eggg 2021/8/14 9:40
     * @see [相关类/方法]（可选）
     * @since [产品/模块版本]（可选）
     */
    public static <S, T> List<T> copyList(List<S> sourceList, Class<T> clazz) {
        if (CollectionUtils.isEmpty(sourceList)) {
            return new ArrayList();
        } else {
            return JSONArray.parseArray(JSON.toJSONString(sourceList), clazz);
        }
    }

    /**
     * 功能描述: 对象拷贝<br>
     * 参数名相同,支持类型不同
     *
     * @param source 源对象
     * @param clazz  目标类型
     * @return T 结果对象
     * @author eggg 2021/8/14 9:39
     * @see [相关类/方法]（可选）
     * @since [产品/模块版本]（可选）
     */
    public static <T> T copyObj(Object source, Class<T> clazz) {
        if (source == null) {
            return null;
        }
        return JSON.parseObject(JSON.toJSONString(source), clazz, Feature.OrderedField);
    }

}
